home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / PolyHitsPolyCheck.AMOS / PolyHitsPolyCheck.amosSourceCode
Encoding:
AMOS Source Code  |  1998-01-02  |  2.7 KB  |  92 lines

  1. Screen Open 0,320,256,4,0
  2. Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 
  3. Palette 0,$FF0,$F0,$F00
  4. Double Buffer 
  5. Autoback 0
  6. Dim COD1(4),COD2(4)
  7. COD1(0)=Rnd(219)+50
  8. COD1(1)=Rnd(155)+50
  9. COD1(2)=1
  10. COD1(3)=1
  11. COD1(4)=0
  12. COD2(0)=Rnd(219)+50
  13. COD2(1)=Rnd(155)+50
  14. COD2(2)=-1
  15. COD2(3)=-1
  16. COD2(4)=Rnd(1024)
  17.  
  18. Do 
  19.   Screen Swap : Multi Wait 
  20.    Extension_8_121C 0,0
  21.   Add COD1(0),COD1(2)
  22.   If COD1(0)<50 or COD1(0)>279 Then COD1(2)=-COD1(2)
  23.   Add COD1(1),COD1(3)
  24.   If COD1(1)<50 or COD1(1)>205 Then COD1(3)=-COD1(3)
  25.   Add COD1(4),3
  26.  
  27.    Extension_8_121C 0,1
  28.   Add COD2(0),COD2(2)
  29.   If COD2(0)<50 or COD2(0)>279 Then COD2(2)=-COD2(2)
  30.   Add COD2(1),COD2(3)
  31.   If COD2(1)<50 or COD2(1)>205 Then COD2(3)=-COD2(3)
  32.   Add COD2(4),5
  33.  
  34.   X11=COD1(0)+ Extension_8_1114(COD1(4),50)
  35.   Y11=COD1(1)+ Extension_8_1106(COD1(4),50)
  36.   X12=COD1(0)+ Extension_8_1114(COD1(4)+256,100)
  37.   Y12=COD1(1)+ Extension_8_1106(COD1(4)+256,100)
  38.   X13=COD1(0)+ Extension_8_1114(COD1(4)+512,100)
  39.   Y13=COD1(1)+ Extension_8_1106(COD1(4)+512,100)
  40.   X14=COD1(0)+ Extension_8_1114(COD1(4)+768,100)
  41.   Y14=COD1(1)+ Extension_8_1106(COD1(4)+768,100)
  42.    Extension_8_1016 X11,Y11 To X12,Y12,3
  43.    Extension_8_1016 X12,Y12 To X13,Y13,1
  44.    Extension_8_1016 X13,Y13 To X14,Y14,1
  45.    Extension_8_1016 X14,Y14 To X11,Y11,1
  46.  
  47.   X21=COD2(0)+ Extension_8_1114(COD2(4),70)
  48.   Y21=COD2(1)+ Extension_8_1106(COD2(4),70)
  49.   X22=COD2(0)+ Extension_8_1114(COD2(4)+256,70)
  50.   Y22=COD2(1)+ Extension_8_1106(COD2(4)+256,70)
  51.   X23=COD2(0)+ Extension_8_1114(COD2(4)+512,70)
  52.   Y23=COD2(1)+ Extension_8_1106(COD2(4)+512,70)
  53.   X24=COD2(0)+ Extension_8_1114(COD2(4)+768,70)
  54.   Y24=COD2(1)+ Extension_8_1106(COD2(4)+768,70)
  55.    Extension_8_1016 X21,Y21 To X22,Y22,3
  56.    Extension_8_1016 X22,Y22 To X23,Y23,2
  57.    Extension_8_1016 X23,Y23 To X24,Y24,2
  58.    Extension_8_1016 X24,Y24 To X21,Y21,2
  59.  
  60. '  X11+TETA*(X12-X11)=X21+LAMBA*(X22-X21)
  61. '  Y11+TETA*(Y12-Y11)=Y21+LAMBA*(Y22-Y21)
  62.  
  63. '
  64. '  TETA*(X12-X11)=(X21-X11)+LAMBA*(X22-X21)
  65. '  TETA*(Y12-Y11)=(Y21-Y11)+LAMBA*(Y22-Y21)
  66.  
  67. '  TETA=((X21-X11)+LAMBA*(X22-X21))/(X12-X11)
  68. ' (((X21-X11)+LAMBA*(X22-X21))/(X12-X11))*(Y12-Y11)=(Y21-Y11)+LAMBA*(Y22-Y21)
  69. ' (((X21-X11)+LAMBA*(X22-X21))/(X12-X11))*(Y12-Y11)-(Y21-Y11)=LAMBA*(Y22-Y21)
  70.  
  71. ' ((X21-X11)*(Y12-Y11)/(X12-X11))-(Y21-Y11)=LAMBA*((Y22-Y21)-((X22-X21)*(Y12-Y11)/(X21-X11)))  
  72.  
  73.   NENNER=(Y11-Y21)*(X12-X11)+(X21-X11)*(Y12-Y11)
  74.   TEILER=(Y22-Y21)*(X12-X11)-(X22-X21)*(Y12-Y11)
  75.   If NENNER<0 and TEILER<0
  76.     NENNER=-NENNER : TEILER=-TEILER
  77.   End If 
  78.   If NENNER=>0 and NENNER<=TEILER
  79.     NENNER=(Y21-Y11)*(X22-X21)+(X11-X21)*(Y22-Y21)
  80.     TEILER=(Y12-Y11)*(X22-X21)-(X12-X11)*(Y22-Y21)
  81.     If NENNER<=0 and TEILER<0
  82.       NENNER=-NENNER : TEILER=-TEILER
  83.     End If 
  84.     If NENNER=>0 and NENNER<=TEILER
  85.       Colour 0,$40
  86.     Else 
  87.       Colour 0,0
  88.     End If 
  89.   Else 
  90.     Colour 0,0
  91.   End If 
  92. Loop